#include <iostream>
#include "httplib.h"
#include "util.hpp"
#include "database.hpp"
#include "Server.hpp"

void filetest()
{
    util::FileUtil("./www").CreateDirectory();
    util::FileUtil("./www/index.html").SetContent("<html></html>");
    std::string body;
    util::FileUtil("./www/index.html").GetContent(&body);
    std::cout << body << std::endl;
    std::cout << util::FileUtil("./www/index.html").Size() << std::endl;
}

void Jsontest()
{
    Json::Value val;
    val["姓名"] = "小张";
    val["年龄"] = 18;
    val["性别"] = "男";
    val["成绩"].append(100);
    val["成绩"].append(99);
    val["成绩"].append(88);

    // 序列化
    std::string body;
    util::JsonUtil::Serialize(val, &body);
    std::cout << body << std::endl;

    // 反序列化
    Json::Value reval;
    util::JsonUtil::UnSerialize(body, &reval);
    std::cout << reval["姓名"].asString() << std::endl;
    std::cout << reval["年龄"].asInt() << std::endl;
    std::cout << reval["性别"].asString() << std::endl;
    // std::cout<<reval["成绩"][0].asInt()<<std::endl;

    // 范围for遍历成绩
    for (auto &e : reval["成绩"])
    {
        std::cout << e.asInt() << std::endl;
    }
}

void datatest()
{
    data::TableVideo tb_videos;
    Json::Value video;
    // video["name"]="西游记";
    // video["info"]="师徒三人西天取经";
    // video["video"]="/video/Journey_to_the_West.mp4";
    // video["image"]="/image/Journey_to_the_West.jpg";
    // tb_videos.Insert(video);
    // tb_videos.Update(1,video);
    tb_videos.SelectAll(&video);
    // tb_videos.SelectOne(2,&video);
    // tb_videos.SelectLike("白",&video);
    std::string body;
    util::JsonUtil::Serialize(video, &body);
    std::cout << body << std::endl;
}

void servertest()
{
    service::Server server(9090);
    server.RunModule();
}

int main()
{
    // filetest();
    // Jsontest();
    // datatest();
     servertest();
    return 0;
}
